+2005-08-27 Øyvind Kolås <pippin@gimp.org>
+
+ * Makefile.am:
+ * babl.pc.in: added -dl
+ * babl/babl-classes.c: Added BablExtension to string list of types.
+ * babl/babl-classes.h: Added BablExtension, some reordering in union.
+ * babl/babl-conversion.c:
+ (create_name), (babl_conversion_new): compute the name of the
+ conversion instead of explicitly having to provide it.
+ * babl/babl-core.c:
+ (convert_double_double), (copy_strip_1),
+ (babl_core_init): Moved double datatype and RGBA model from
+ base into core.
+ * babl/babl-core.h: new file
+ * babl/babl-db.h: improved logging, print current extender as well.
+ * babl/babl-ids.h: removed some non central ids.
+ * babl/babl-internal.h: new varargs based logger.
+ * babl/babl-introspect.c: (babl_introspect): use quiet "fake"
+ extender. Allow introspection of single objects.
+ * babl/babl-introspect.h: Allow introspection of single objects.
+ * babl/babl-memory.c: (babl_memory_sanity): use babl_log instead of
+ fprintf.
+ * babl/babl-sanity.c: (id_sanity): only complain about id==0 in
+ BablBase / BablCore.
+ * babl/babl.c: (babl_init), (babl_destroy): added core and extension
+ to build up/tear down lists.
+ * babl/babl.h: removed babl_introspect which doesn't belong here
+ anymore.
+ * babl/base/Makefile.am: Removed type-double.c
+ * babl/base/babl-base.c: (types), (models): removed
+ babl_base_type_double ()
+ * babl/base/model-rgb.c: (components), (models): removed RGBA model.
+ * babl/base/type-double.c: removed
+
+ * docs/index-static.html.in:
+ * tests/Makefile.am: LDADD += -ldl
+ * tests/introspect.c: (main): pass NULL as argument to
+ babl_introspect () to do full objectspace traversal.
+
+ * babl/babl-fish.h:
+ * babl/babl-model.h:
+ * babl/babl-pixel-format.h:
+ * babl/babl-sampling.h:
+ * babl/babl-conversion.h:
+ * babl/babl-component.h: cosmetic rearrangement of lines.
+
2005-08-27 Øyvind Kolås <pippin@gimp.org>
* babl/babl-component.c: (babl_component_new):
Name: babl
Description: Dynamic; any to any, pixel format conversion library
Version: @VERSION@
-Libs: -L${libdir} -lbabl
-Cflags: -I${includedir}/babl
+Libs: -L${libdir} -lbabl -ldl
+Cflags: -I${includedir}/babl-0.0/babl
c_sources = \
babl.c \
babl-classes.c \
+ babl-core.c \
babl-component.c \
babl-conversion.c \
+ babl-extension.c \
babl-fish.c \
babl-image.c \
babl-introspect.c \
h_sources = \
babl-classes.h \
babl-component.h \
+ babl-core.h \
babl-conversion.h \
babl-db.h \
+ babl-extension.h \
babl-ids.h \
babl-instance.h \
babl-internal.h \
babl-classes.h \
babl-component.h \
babl-conversion.h \
+ babl-extension.h \
babl-fish.h \
+ babl-ids.h \
babl-image.h \
+ babl-instance.h \
babl-model.h \
babl-pixel-format.h \
babl-sampling.h \
EXTRA_DIST := \
.cvsignore
-
* Boston, MA 02111-1307, USA.
*/
-#include "babl-classes.h"
+#include "babl-internal.h"
static const char *class_names[] =
{
"BablFish",
"BablFishReference",
"BablImage",
+ "BablExtenstion",
"BablSky"
};
*/
int babl_hmpf_on_name_lookups = 0;
+void
+babl_internal_init (void)
+{
+}
+
+void
+babl_internal_destroy (void)
+{
+}
+
BABL_FISH_REFERENCE,
BABL_IMAGE,
+ BABL_EXTENSION,
+
BABL_SKY
} BablClassType;
-#define BABL_CLASS_TYPE_IS_VALID(klass_type) \
- ( ((klass_type)>=BABL_INSTANCE ) && ((klass_type)<=BABL_SKY) ?1:0 )
-const char *babl_class_name (BablClassType klass);
/* common header for any item inserted into database */
typedef struct
BablClassType class_type;
int id; /*< a numerical id, look at 'babl-ids.h' for the reserved
ones */
+ void *creator;
char *name; /*< the name this type exists under */
} BablInstance;
+
typedef struct
BablConversion {
BablInstance instance;
* mantissa */
} BablTypeFloat;
+
typedef struct
{
BablInstance instance;
union Babl *destination;
} BablFish;
-
/* BablFishReference on the double versions of conversions
* that are required to exist for maximum sanity.
*
BablFish fish;
} BablFishReference;
+typedef struct
+{
+ BablInstance instance; /* path to .so / .dll is stored in instance name */
+ void *dl_handle;
+ void (*destroy) (void);
+} BablExtension;
+
typedef union
{
BablClassType class_type;
BablModel model;
BablFormat format;
BablConversion conversion;
+ BablImage image;
BablFish fish;
BablFishReference reference_fish;
- BablImage image;
+ BablExtension extension;
} Babl;
-
-#define BABL_IS_BABL(obj) \
-(NULL==(obj)?0: \
- BABL_CLASS_TYPE_IS_VALID(((Babl*)(obj))->class_type) \
-)
-
-#include "babl-instance.h"
-
#endif
#define _BABL_COMPONENT_H
#include "babl-classes.h"
-BABL_DEFINE_CLASS (babl_component)
+#include "babl-instance.h"
+
+BABL_DEFINE_CLASS (babl_component)
#endif
#include "babl-internal.h"
#include "babl-db.h"
+#include "babl-extension.h"
#include "assert.h"
#include <string.h>
#include <stdarg.h>
return babl;
}
+static char buf[512]="";
+static char *
+create_name (Babl *source, Babl *destination)
+{
+
+ if (babl_extender ())
+ {
+ snprintf (buf, 512-1, "%s::%s to %s", BABL(babl_extender())->instance.name, source->instance.name, destination->instance.name);
+ buf[511]='\0';
+ }
+ else
+ {
+ snprintf (buf, 512-1, "%s to %s", source->instance.name, destination->instance.name);
+ buf[511]='\0';
+ }
+ return buf;
+}
+
Babl *
babl_conversion_new (const char *name,
...)
assert (source);
assert (destination);
- babl = conversion_new (name, id, source, destination, time_cost, loss, linear,
+ babl = conversion_new (create_name (source, destination), id, source, destination, time_cost, loss, linear,
planar, planar_bit);
if (db_insert (babl) == babl)
#define BABL_CONVERSION_H
#include "babl-classes.h"
-
-BABL_DEFINE_CLASS (babl_conversion)
+#include "babl-instance.h"
void babl_conversion_process (BablConversion *conversion,
void *source,
void *destination,
long n);
+BABL_DEFINE_CLASS (babl_conversion)
#endif
--- /dev/null
+#include <string.h>
+#include "util.h"
+#include "babl.h"
+
+static void
+convert_double_double (void *src,
+ void *dst,
+ int src_pitch,
+ int dst_pitch,
+ int n)
+{
+ if (src_pitch == 64 &&
+ dst_pitch == 64)
+ {
+ memcpy (dst, src, n/8);
+ return;
+ }
+ while (n--)
+ {
+ (*(double *) dst) = (*(double *) src);
+ dst += dst_pitch;
+ src += src_pitch;
+ }
+}
+
+
+static void
+copy_strip_1 (int src_bands,
+ void **src,
+ int *src_pitch,
+ int dst_bands,
+ void **dst,
+ int *dst_pitch,
+ int n)
+{
+ BABL_PLANAR_SANITY
+ while (n--)
+ {
+ int i;
+
+ for (i=0;i<dst_bands;i++)
+ {
+ double foo;
+ if (i<src_bands)
+ foo = *(double *) src[i];
+ else
+ foo = 1.0;
+ *(double*)dst[i] = foo;
+ }
+
+ BABL_PLANAR_STEP
+ }
+}
+
+void
+babl_core_init (void)
+{
+ babl_type_new (
+ "double",
+ "id", BABL_DOUBLE,
+ "bits", 64,
+ NULL);
+
+ babl_conversion_new (
+ "babl-base: double to double",
+ "source", babl_type_id (BABL_DOUBLE),
+ "destination", babl_type_id (BABL_DOUBLE),
+ "linear", convert_double_double,
+ NULL
+ );
+
+ babl_component_new (
+ "R",
+ "id", BABL_RED,
+ "luma",
+ "chroma",
+ NULL);
+
+ babl_component_new (
+ "G",
+ "id", BABL_GREEN,
+ "luma",
+ "chroma",
+ NULL);
+
+ babl_component_new (
+ "B",
+ "id", BABL_BLUE,
+ "luma",
+ "chroma",
+ NULL);
+
+ babl_component_new (
+ "A",
+ "id", BABL_ALPHA,
+ "alpha",
+ NULL);
+
+ babl_model_new (
+ "rgba",
+ "id", BABL_RGBA,
+ babl_component_id (BABL_RED),
+ babl_component_id (BABL_GREEN),
+ babl_component_id (BABL_BLUE),
+ babl_component_id (BABL_ALPHA),
+ NULL);
+
+ babl_conversion_new (
+ "babl-base: rgba to rgba",
+ "source", babl_model_id (BABL_RGBA),
+ "destination", babl_model_id (BABL_RGBA),
+ "planar", copy_strip_1,
+ NULL
+ );
+}
--- /dev/null
+/* babl - dynamically extendable universal pixel conversion library.
+ * Copyright (C) 2005, Øyvind Kolås.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef BABL_CORE_H
+#define BABL_CORE_H
+
+void babl_core_init (void);
+
+#endif
#endif
#include "babl-instance.h"
+#include "babl-extension.h"
#include <string.h>
db = NULL;
}
-
DB_DEF Babl *
db_insert (Babl *babl)
{
if (collision)
{
- if (!strcmp (collision->instance.name, babl->instance.name))
- babl_log ("conflicting name: existing(%i:'%s') - new(%i:'%s')",
- collision->instance.id, collision->instance.name,
- babl->instance.id, babl->instance.name);
+ if (!strcmp (collision->instance.name, babl->instance.name) )
+ babl_log ("conflicting name:\n\t\tnew: '%s'\n\t\texisting '%s' from %s",
+ babl->instance.name, collision->instance.name,
+ BABL(collision->instance.creator)->instance.name);
else if (collision->instance.id == babl->instance.id)
- babl_log ("conflicting id: existing(%i:'%s') - new(%i:'%s')",
- collision->instance.id, collision->instance.name,
- babl->instance.id, babl->instance.name);
+ babl_log ("conflicting id:\n\t\tnew: '%s' (id=%i)\n\t\texisting '%s' from %s",
+ babl->instance.name, babl->instance.id, collision->instance.name,
+ BABL(collision->instance.creator)->instance.name);
return collision;
}
memset (db + db_size, 0, DB_INCREMENT_SIZE * sizeof (Babl*));
db_size += DB_INCREMENT_SIZE;
}
+ babl->instance.creator = babl_extender ();
db[db_entries++]=babl;
return babl;
}
#define BABL_FISH_H
#include "babl-classes.h"
-
-BABL_DEFINE_CLASS_NO_NEW_NO_ID(babl_fish)
+#include "babl-instance.h"
/** create a new BablFish capable of translating between the pixel
* formats given in source and destination. (use babl_format (string))
*/
int babl_fish_needs_image (Babl *babl_fish);
+
+
+BABL_DEFINE_CLASS_NO_NEW_NO_ID(babl_fish)
#endif
#define _BABL_FORMAT_H
#include "babl-classes.h"
+#include "babl-instance.h"
+
BABL_DEFINE_CLASS (babl_format)
#endif
BABL_U16_CIE_AB,
BABL_U8_CIE_L,
BABL_U8_CIE_AB,
+ BABL_TYPE_LAST_INTERNAL,
BABL_MODEL_BASE = 1000,
BABL_RGB,
BABL_YCBCR_ALPHA,
BABL_CIE_LAB,
BABL_CIE_LAB_ALPHA,
- BABL_CMY,
- BABL_CMYK,
- BABL_CMYK_ALPHA,
+ BABL_MODEL_LAST_INTERNAL,
BABL_COMPONENT_BASE = 10000,
BABL_RED,
BABL_CIE_B,
BABL_CB,
BABL_CR,
- BABL_CYAN,
- BABL_MAGENTA,
- BABL_YELLOW,
- BABL_KEY,
- BABL_Z_BUFFER,
BABL_PADDING,
-
+ BABL_COMPONENT_LAST_INTERNAL,
BABL_FORMAT_BASE = 100000,
BABL_SRGB,
BABL_YCBCR411,
BABL_YCBCR422,
BABL_YCBCR420,
+ BABL_FORMAT_LAST_INTERNAL,
BABL_PIXEL_USER_BASE,
};
* Boston, MA 02111-1307, USA.
*/
-#include "babl-classes.h"
+#include "babl-internal.h"
static const char *class_names[] =
{
"BablFish",
"BablFishReference",
"BablImage",
+ "BablExtenstion",
"BablSky"
};
*/
int babl_hmpf_on_name_lookups = 0;
+void
+babl_internal_init (void)
+{
+}
+
+void
+babl_internal_destroy (void)
+{
+}
+
#include <stdio.h>
#include <string.h>
+#include "babl-classes.h"
+#include "babl-instance.h"
+
#include "babl-ids.h"
#include "babl-util.h"
#include "babl-memory.h"
+#include "babl-introspect.h"
+
#include "babl-classes.h"
/* internal classes */
#include "babl-conversion.h"
+#include "babl-extension.h"
/* */
-#define babl_log(args...) do { \
- fprintf (stdout, "%s:%i %s() ", \
- __FILE__, __LINE__, __FUNCTION__); \
- fprintf (stdout, args); \
- fprintf (stdout, "\n"); \
-} while (0)
+/**** LOGGER ****/
+#include <stdarg.h>
+
+static inline void
+real_babl_log (const char *file,
+ int line,
+ const char *function,
+ const char *fmt, ...)
+{
+ Babl *extender = babl_extender();
+ va_list varg;
+
+
+ if (extender != babl_extension_quiet_log())
+ {
+ if (babl_extender())
+ fprintf (stdout, "When loading %s:\n\t", babl_extender()->instance.name);
+
+ fprintf (stdout, "%s:%i %s()\n\t", file, line, function);
+ }
+
+ va_start (varg, fmt);
+ vfprintf (stdout, fmt, varg);
+ va_end (varg);
+
+ fprintf (stdout, "\n");
+}
+
+#define babl_log(args...) real_babl_log(__FILE__, __LINE__, __FUNCTION__, args)
+
+/********************/
+
+#define BABL_CLASS_TYPE_IS_VALID(klass_type) \
+ ( ((klass_type)>=BABL_INSTANCE ) && ((klass_type)<=BABL_SKY) ?1:0 )
+
+#define BABL_IS_BABL(obj) \
+(NULL==(obj)?0: \
+ BABL_CLASS_TYPE_IS_VALID(((Babl*)(obj))->class_type) \
+)
+
+extern int babl_hmpf_on_name_lookups;
+
+const char *babl_class_name (BablClassType klass);
+void babl_internal_init (void);
+void babl_internal_destroy (void);
extern int babl_hmpf_on_name_lookups;
#include "babl.h"
#include "babl-internal.h" /* for babl_log */
+#define BABL_LOG
+
#ifdef BABL_LOG
static void sampling_introspect (Babl *babl);
static void model_introspect (Babl *babl);
static void type_introspect (Babl *babl);
static void format_introspect (Babl *babl);
+
static int each_introspect (Babl *babl,
void *user_data);
#endif
+extern Babl *babl_extension_current_extender;
void
-babl_introspect (void)
+babl_introspect (Babl *babl)
{
#ifdef BABL_LOG
- babl_log ("Introspection report%s","");
- babl_log ("====================================================%s" ,"");
+ Babl *extender_backup = babl_extension_current_extender;
+
+ babl_extension_current_extender = babl_extension_quiet_log();
+
+ if (babl)
+ {
+ each_introspect (babl, NULL);
+ return;
+ }
+ babl_log ("Introspection report");
+ babl_log ("====================================================");
- babl_log ("%s","");
- babl_log ("Data Types:%s", "");
+ babl_log ("");
+ babl_log ("Data Types:");
babl_type_each (each_introspect, NULL);
- babl_log ("%s","");
- babl_log ("Sampling (chroma subsampling) factors:%s", "");
+ babl_log ("");
+ babl_log ("Sampling (chroma subsampling) factors:");
babl_sampling_each (each_introspect, NULL);
- babl_log ("%s","");
- babl_log ("Components:%s", "");
+ babl_log ("");
+ babl_log ("Components:");
babl_component_each (each_introspect, NULL);
- babl_log ("%s","");
- babl_log ("Models (of components):%s", "");
+ babl_log ("");
+ babl_log ("Models (of components):");
babl_model_each (each_introspect, NULL);
- babl_log ("%s","");
- babl_log ("Pixel formats:%s", "");
+ babl_log ("");
+ babl_log ("Pixel formats:");
babl_format_each (each_introspect, NULL);
- babl_log ("%s","");
- babl_log ("conversions:%s", "");
+ babl_log ("");
+ babl_log ("conversions:");
babl_conversion_each (each_introspect, NULL);
- babl_log ("%s","");
- babl_log ("fishes:%s", "");
+ babl_log ("");
+ babl_log ("extensions:");
+ babl_extension_each (each_introspect, NULL);
+ babl_log ("");
+ babl_log ("fishes");
babl_fish_each (each_introspect, NULL);
+ babl_log ("");
- babl_log ("%s", "");
+ babl_extension_current_extender = extender_backup;
#endif
}
#ifndef _BABL_INTROSPECT_H
#define _BABL_INTROSPECT_H
+#include "babl-classes.h"
+
void
-babl_introspect (void);
+babl_introspect (Babl *babl);
#endif
{
if (frees != mallocs + strdups + callocs)
{
- fprintf (stderr,
-"babl_memory usage does not add up!!!!!!!!\n"
+ babl_log ("memory usage does not add up!\n"
"%s\n"
-"balance: %i-%i=%i\n",
+"\tbalance: %i-%i=%i\n",
mem_stats(), (strdups+mallocs+callocs),frees, (strdups+mallocs+callocs)-frees);
}
}
#define _BABL_format_H
#include "babl-classes.h"
+#include "babl-instance.h"
+
BABL_DEFINE_CLASS (babl_model)
#endif
#define _BABL_FORMAT_H
#include "babl-classes.h"
+#include "babl-instance.h"
+
BABL_DEFINE_CLASS (babl_format)
#endif
#define _BABL_SAMPLING_H
#include "babl-classes.h"
+#include "babl-instance.h"
-BABL_DEFINE_CLASS_NO_NEW_NO_ID(babl_sampling)
Babl * babl_sampling (int horizontal,
int vertical);
+
+BABL_DEFINE_CLASS_NO_NEW_NO_ID(babl_sampling)
#endif
id_sanity (Babl *babl,
void *user_data)
{
- if (0 == babl->instance.id)
+ if (0 == babl->instance.id &&
+ babl->instance.creator &&
+ !strcmp(BABL(babl->instance.creator)->instance.name, "BablBase"))
{
OK=0;
babl_log ("%s\t'%s' has id==0",
#include "babl.h"
#include "babl-internal.h"
-#include "babl-base.h"
#include "babl-sanity.h"
#include "babl-introspect.h"
+#include "babl-core.h"
static int ref_count=0;
babl_model_init ();
babl_format_init ();
babl_conversion_init ();
- babl_base_init ();
+ babl_core_init ();
+ babl_sanity ();
+ babl_extension_base ();
+ babl_sanity ();
+ babl_extension_init ();
babl_sanity ();
}
}
void
babl_destroy (void)
{
- /* babl_base is destroyed by the containing types */
-
if (!--ref_count)
{
+ babl_extension_destroy ();
babl_fish_destroy ();
babl_conversion_destroy ();
babl_format_destroy ();
#include "babl-sampling.h"
#include "babl-pixel-format.h"
-
void babl_init (void);
-void babl_introspect (void);
void babl_destroy (void);
#endif
c_sources = \
babl-base.c \
cpercep.c \
- type-double.c \
type-float.c \
type-u8.c \
type-u16.c \
* types
*/
-void babl_base_type_double (void);
void babl_base_type_float (void);
void babl_base_type_u8 (void);
void babl_base_type_u16 (void);
static void
types (void)
{
- babl_base_type_double (); /* must be registered first since it is the
- reference */
babl_base_type_float ();
babl_base_type_u8 ();
babl_base_type_u16 ();
static void
models (void)
{
- babl_base_model_rgb (); /* must be registered first since it is the
- reference, (and contains the alpha definition) */
+ babl_base_model_rgb ();
babl_base_model_gray ();
babl_base_model_lab ();
babl_base_model_ycbcr ();
static void
components (void)
{
- babl_component_new (
- "R",
- "id", BABL_RED,
- "luma",
- "chroma",
- NULL);
-
- babl_component_new (
- "G",
- "id", BABL_GREEN,
- "luma",
- "chroma",
- NULL);
-
- babl_component_new (
- "B",
- "id", BABL_BLUE,
- "luma",
- "chroma",
- NULL);
babl_component_new (
"R'",
NULL);
- babl_component_new (
- "A",
- "id", BABL_ALPHA,
- "alpha",
- NULL);
-
babl_component_new (
"R*A",
"id", BABL_RED_MUL_ALPHA,
static void
models (void)
{
- babl_model_new (
- "rgba",
- "id", BABL_RGBA,
- babl_component_id (BABL_RED),
- babl_component_id (BABL_GREEN),
- babl_component_id (BABL_BLUE),
- babl_component_id (BABL_ALPHA),
- NULL);
babl_model_new (
"rgb",
}
}
-
-
-
static void
conversions (void)
{
+++ /dev/null
-/* babl - dynamically extendable universal pixel conversion library.
- * Copyright (C) 2005, Øyvind Kolås.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General
- * Public License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <string.h>
-#include <assert.h>
-
-#include "babl.h"
-
-static void
-convert_double_double (void *src,
- void *dst,
- int src_pitch,
- int dst_pitch,
- int n)
-{
- if (src_pitch == 64 &&
- dst_pitch == 64)
- {
- memcpy (dst, src, n/8);
- return;
- }
- while (n--)
- {
- (*(double *) dst) = (*(double *) src);
- dst += dst_pitch;
- src += src_pitch;
- }
-}
-
-void
-babl_base_type_double (void)
-{
- babl_type_new (
- "double",
- "id", BABL_DOUBLE,
- "bits", 64,
- NULL);
-
- babl_conversion_new (
- "babl-base: double to double",
- "source", babl_type_id (BABL_DOUBLE),
- "destination", babl_type_id (BABL_DOUBLE),
- "linear", convert_double_double,
- NULL
- );
-}
<h3>Core</h3>
<ul>
+ <li>Speed up name resolution in babl-db.h (using a hash table, and
+ probably also a id table)</li>
<li>Meta level optimizations.</li>
<li>Compile and/or runtime profiling. <em>(The speed of conversions
is bound to 'wobble', according to architecture, compiler flags,
calculation should be 3.13159, but the result obtained was 3.14x10^0,
the relative error is 0.00159/3.14159 => 0.0005 (source: 'A new book
on c (cook1_0a.pdf)')</li>-->
+<!--
+cvs:
+
+cp babl/babl-pixel-format.c babl/babl-format.c
+cp babl/babl-pixel-format.h babl/babl-format.h
+cp babl/babl-classes.c babl/babl-internal.c
+cp babl/base/model-cmyk.c extenstions/cmyk.c
+
+
+-->
</ul>
<a name='TODO-Extensions'></a>
AM_CFLAGS = -I$(top_srcdir) -I$(top_srcdir)/babl
-LDADD = $(top_builddir)/babl/libbabl.la -lm
-
+LDADD = $(top_builddir)/babl/libbabl.la -lm -ldl
noinst_PROGRAMS = \
introspect \
char **argv)
{
babl_init ();
- babl_introspect ();
+ babl_introspect (NULL);
babl_destroy ();
return 0;
}